package com.smartleanx.module.hrm.service.employee;

import com.smartleanx.module.hrm.controller.admin.employee.vo.EmployeeChangesFilesSaveReqVO;
import com.smartleanx.module.hrm.controller.admin.employee.vo.EmployeeTransferSimpleRespVo;
import com.smartleanx.module.hrm.dal.dataobject.employee.EmployeeTransferRecordDO;

import java.util.Collection;
import java.util.List;


/**
 * 员工岗位/职位变更记录 Service 接口
 *
 * @author 精益大师
 */
public interface EmployeeTransferRecordService {

    /**
     * 创建员工岗位/职位变更记录
     *
     * @return 编号
     */
    int createEmployeeChangeRecord(EmployeeTransferRecordDO employeeTransferRecordDO);

    int updateEmployeeTransferRecord(EmployeeTransferRecordDO updateObj);

    EmployeeTransferRecordDO getEmployeeTransferRecord(Long id);

    List<EmployeeTransferRecordDO> getTransferRecordList(Long employeeId);

    /**
     * 获取员工岗位/职位变更记录
     *
     * @param employeeIdList
     * @param changeType
     * @return
     */
    List<EmployeeTransferRecordDO> getTransferRecordList(Collection<Long> employeeIdList, Integer changeType);

    /**
     * 获取员工最后一条调动记录
     * @return
     */
    List<EmployeeTransferRecordDO> getTransferRecordList();

    /**
     * 按照附件类型获取调动记录
     * @param employeeId
     * @param bizFileType
     * @return
     */
    List<EmployeeTransferSimpleRespVo> changesGroups(Long employeeId, Integer bizFileType);

    /**
     * 创建管理端补充的调动记录附件关联关系
     * @param reqVO
     */
    void createChangesFiles(EmployeeChangesFilesSaveReqVO reqVO);

    void deleteEmployeeTransferRecord(Long id);
}
